# 用pandas 函数实现一下几个功能
# 实现一个MyCSV类用来实现
# 1. 读取/打开一个csv文件
# 2. 对csv文件进行数据清洗，去除所有有空值的列
# 3. 去除重复行
# 4. 判断和另一张csv是否相同


import pandas as pd


class MyCSV:

    def __init__(self):
        self.df = None

    def open_csv(self, csv_file):
        self.df = pd.read_csv(csv_file)

    def remove_null_columns(self):
        self.df.dropna(axis=1, how='any', inplace=True)

    def remove_duplicates(self):
        self.df.drop_duplicates(inplace=True)

    def compare_to_csv(self, other_csv):
        other_df = pd.read_csv(other_csv)

        # 重置列顺序，使用reset_index()将两张DataFrame的索引都重置为默认的0到长度的索引
        self.df = self.df.reset_index(drop=True)
        other_df = other_df.reset_index(drop=True)

        # 比较行列数
        if len(self.df) != len(other_df) or len(self.df.columns) != len(other_df.columns):
            return False

        # 比较每一列的值
        for col in self.df.columns:
            print(type(self.df[col] == other_df[col]))
            a= self.df[col] == other_df[col]
            print(type(a))
            if (self.df[col] == other_df[col]).any():
                # if not (self.df[col] == other_df[col]).all():
                return False

        return True


# 使用示例
csv = MyCSV()
# 读取/打开一个csv文件
csv.open_csv('data1.csv')
# 去除所有有空值的列
csv.remove_null_columns()
# 去除重复行
csv.remove_duplicates()
# 判断和data2.csv内容是否相同
print(csv.compare_to_csv('data2.csv'))
